import 'package:common/app_config.dart';
import 'package:common/common.dart';
import 'package:flustars/flustars.dart';
import 'package:get/get.dart';

import '../../constants/app_storage_keys.dart';
import '../auth/login/login_page.dart';
import '../auth/login/login_phone_page.dart';
import '../auth/model/login_config_model.dart';
import '../auth/user/user.dart';
import '../tabbar_page/tabbar_page.dart';
import 'privacy_policy_dialog.dart';

class SplashLogic extends GetxController {
  @override
  void onReady() {
    super.onReady();
    //是否是第一次进入App,需要同意协议弹窗，否则退出App
    // final bool isFirstOpen = Storage.getBool(StorageKeys.storageFirstOpen) ?? false;
    // logs('isFirstOpen:$isFirstOpen');
    // if (isFirstOpen == false) {
    //   //展示协议弹窗
    //   _showAgreementDialog();
    //   if (Device.isAndroid) {
    //     // AppChannel.skipAndroidSplashScreen();
    //   }
    // } else {
    _gotoNextPage();
    // }
  }

  // 展示协议弹窗
  void _showAgreementDialog() {
    SmartDialog.show(
      usePenetrate: false,
      clickMaskDismiss: false,
      backType: SmartBackType.block,
      keepSingle: true,
      builder: (context) => PrivacyPolicyDialog(
        confirmAction: () {
          logs('同意协议了');
          _gotoNextPage(delay: false, login: true);
        },
        cancemText: AppConfig.appChanel == 'huawei' ? '不同意并退出APP' : '不同意',
        cancelAction: () {},
      ),
    );
  }

  /// 同意了协议之后的初始化第三方与真正跳转逻辑判断
  void _gotoNextPage({bool delay = true, bool login = false}) async {
    Storage.setBool(AppStorageKeys.storageFirstOpen, true);
    // 路径管理工具类 (SD卡，沙盒等路径获取)
    setInitDir(initTempDir: true, initAppDocDir: true, initAppSupportDir: true, initStorageDir: false);
    await Future.delayed(const Duration(milliseconds: 1000)); //默认1秒延时
    DirectoryUtil.getInstance(); //SD卡管控
    Get.put(ConfigService());
    DeviceService.init(); //  初始化依赖注入
    // //初始化微信支付
    // AppPayService.instance.weChatSdkInit();
    // // 初始化高德地图
    // AMapFlutterLocation.setApiKey(AppConfig.sdkConfig.amapAndroidKey, AppConfig.sdkConfig.amapIOSKey);
    // AMapFlutterLocation.updatePrivacyShow(true, true);
    // if (delay) {
    //   await Future.delayed(const Duration(milliseconds: 1400), () {});
    // }

    // // if (UserService.to.isLogin == false && login) {
    // //   LoginUtils.goToLogin(isBack: false); //未登录，跳转到登录页面
    // //   return;
    // // }
    Get.put(UserService());

    // UserService.to.initUser();

    // final bool isFirstOpen = Storage.getBool(StorageKeys.storageFirstOpen) ?? false;

    // if (isFirstOpen) {
    //   //极光推送初始化与监听
    //   if (Device.isIOS || Device.isAndroid) {
    //     jPushReceive.init();
    //     jPushReceive.clearBadge(); //清除角标
    //   }
    // }

    // // 先查询原生平台有没有保存需要跳转的子路由
    // String routerName = '';
    // // await AppChannel.getNativeRouterName();
    // logs('SplashLogic - 查询原生平台有没有保存需要跳转的子路由:$routerName');

    // if (routerName.toString().checkNotEmpty) {
    //   // 只跳转一次
    //   Get.offAllNamed(routerName);
    //   AppChannel.clearNativeRouterName();
    // } else {
    //   final bool storageGuide = Storage.getBool(StorageKeys.storageGuide, defaultValue: true) ?? true;
    //   // 如果没有经历过GUIDE页面，进入GUIDE，否则进入首页
    //   if (storageGuide) {
    //     Get.offAllNamed(CommonRouter.introSlider);
    //   } else {
    //     AppMainPage.startWithPopAll();
    //   }
    // }

    // Get.to(const LoginPage());

    //跳转页面之后清除 Android 的 SplashScreen 库
    if (Device.isAndroid) {
      // AppChannel.skipAndroidSplashScreen();
    }

    String token = Storage.getString(StorageKeys.userToken, defaultValue: '') ?? '';
    if (token.isEmpty) {
      // 未登录跳转到登录页面
      Result result = await HttpProvider.get('/getEnterInfo', explain: '获取登录初始化数据');
      LoginConfig config = LoginConfig.fromJson(result.data);
      logs(config);
      if (config.loginopen == '1') {
        if (config.oneclickopen == '1') {
          Get.offAll(LoginPage(config: config));
          return;
        }
        if (config.smsrlopen == '1') {
          Get.offAll(LoginPhonePage(config: config));
          return;
        }
      } else {
        Toast.showText(config.alarmmsg ?? '');
      }
    } else {
      // 已登录跳转到首页
      Get.offAll(const TabBarPage());
    }
  }
}
